package com.itheima.aop;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * 切面类: 提供增强方法的类
 */
public class LogAop {

    public void before(){
        System.out.println("前置增强");
    }

    public void afterRunning(){
        System.out.println("后置增强");
    }

    public void throwRunning(){
        System.out.println("异常增强");
    }

    public void after(){
        System.out.println("最终增强");
    }

    public Object around(ProceedingJoinPoint point){

        System.out.println("环绕通知");
        Object obj = null;
        try {
            //前置通知
            before();
           obj = point.proceed();//继续执行目标方法
            //后置通知
            afterRunning();
        } catch (Throwable e) {
            //异常通知
            throwRunning();
            e.printStackTrace();
        }finally {
            //最终通知
            after();
        }
        return obj;
    }


}
